home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
LANG
/
C
/
LIB
/
DESK
/
CORE
/
Desk
/
h_doc
/
Pane
< prev
next >
Wrap
Text File
|
1996-05-22
|
5KB
|
150 lines
/*
#### # # # #
# # # # # The FreeWare C library for
# # ## ### # # # # ### RISC OS machines
# # # # # # # # # # # ___________________________________
# # #### ### ## # # # #
# # # # # # # # # # Please refer to the accompanying
#### ### #### # # ##### # ### documentation for conditions of use
________________________________________________________________________
File: Pane.h
Author: Copyright © 1994 Ainsley Pereira. Complete revision by Keith Hall
Version: 1.11 (30th March 1994)
Purpose: Handles windows with panes.
*/
/*
* Implementation notes
* --------------------
* The offset of the pane from the master window is taken from their initial
* positions, so make sure that they are in the right places relative to each
* other when you save them from Glazier (or FormEd if you have a pet
* triceratops ;-)
* Another point is that the relative positions are kept constant from the top
* left of the visible area. This only matters if the master window is
* resizeable. The top left was chosen as most panes are either in fixed size
* windows (eg. Options windows) or are down the top left of a window (eg.
* Artworks, Draw etc.)
* If you want to do something like StrongEd's status bar then you'll have to
* a) Alter Desk_pane_data.offset.y everytime you resize the window, or
* b) Alter the code to use xxxxx.min.y - yyyyy.min.y (although then you can't
* have the Artworks/Draw style panes).
*/
#ifndef __Desk_Pane_h
#define __Desk_Pane_h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __Desk_Wimp_h
#include "Desk.Wimp.h"
#endif
#ifndef __Desk_Window_h
#include "Desk.Window.h"
#endif
#ifndef __Desk_WimpSWIs_h
#include "Desk.WimpSWIs.h"
#endif
typedef struct
{
Desk_window_handle master;
Desk_window_handle pane;
Desk_wimp_point offset;
Desk_wimp_point size;
union
{
int value;
struct
{
unsigned int isopen :1; /* master/pane pair currently displaying */
unsigned int fixed :1; /* pane sticks to position relative to top of master */
unsigned int resize :1; /* pane shrinks with relation to size of master */
unsigned int horiz :1; /* pane is horizontal (shrinks to left when resize flag set
and window gets resized (like !StrongEd toolbar) */
unsigned int vert :1; /* pane is horizontal (shrinks to top when resize flag set
and window moves (like !Draw) */
unsigned int dummy :27;
} data;
} flags;
} Desk_pane_data;
#define Desk_pane_OPEN 0x0001
#define Desk_pane_FIXED 0x0002
#define Desk_pane_RESIZE 0x0004
#define Desk_pane_HORIZ 0x0008
#define Desk_pane_VERT 0x0010
extern Desk_bool Desk_Pane_OpenEventHandler(Desk_event_pollblock *event, void *reference);
/*
* Install as a handler for Desk_event_OPEN on the master window.
* It opens the pane at the correct offset at the correct size.
*/
extern Desk_pane_data *Desk_Pane_GetSysHandle(Desk_window_handle master);
/*
*
* Returns a pointer to the Desk_pane_data structure associated with the 'master' window.
* Returns NULL if the master window isn't linked.
*/
extern int Desk_Pane_SetFlags(Desk_window_handle master, int flags);
/*
* Sets the flags of the Pane/Master window relationship.
* Returns the current flags if 'flags' is -1.
* Returns NULL if the master window isn't linked.
*/
extern void Desk_Pane_Link(Desk_window_handle mast, Desk_window_handle pane,
Desk_wimp_point *offset, Desk_wimp_point *size, int flags);
/*
*
* Links the pane window handle to the master window handle.
* if offset or size == NULL then the data is taken from the template
*/
extern Desk_window_handle Desk_Pane_CreateAndLink(char *mastname, char *panename,
int mastmaxsize, int panemaxsize,
Desk_wimp_point *offset, Desk_wimp_point *size, int flags);
/*
* Creates the windows using Desk_Window_Create and then Desk_Pane_Links them together.
* returns window handle of the master window
* if offset or size == NULL then the data is taken from the template
*/
extern void Desk_Pane_Show(Desk_window_handle window, Desk_window_openpos openpos);
/*
* Simply calls Desk_Window_Show for the master window and the pane.
*/
extern void Desk_Pane_Delete(Desk_window_handle window);
/*
* Calls Desk_Window_Delete for the master window and the pane and de-links them
*/
extern void Desk_Pane_Hide(Desk_window_handle window);
/*
*
* Simply calls Desk_Window_Hide for the master window and the pane.
*/
#ifdef __cplusplus
}
#endif
#endif